JVM 高级面试题
一、Java内存模型
1. 我们开发人员编写的Java代码是怎么让电脑认识的
- 首先先了解电脑是二进制的系统,他只认识 01010101
- 比如我们经常要编写 HelloWord.java 电脑是怎么认识运行的
- HelloWord.java是我们程序员编写的,我们人可以认识,但是电脑不认识
Java文件编译的过程
1、 程序员编写的.java文件;
2、 由javac编译成字节码文件.class:(为什么编译成class文件,因为JVM只认识.class文件);
3、 在由JVM编译成电脑认识的文件(对于电脑系统来说文件代表一切);
(这是一个大概的观念 抽象画的概念)

2. 为什么说java是跨平台语言
- 这个夸平台是中间语言(JVM)实现的夸平台
- Java有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统
难道C 和 C++ 不能夸平台吗 其实也可以 C和C++需要在编译器层面去兼容不同操作系统的不同层面,写过C和C++的就知道不同操作系统的有些代码是不一样
3. Jdk和Jre和JVM的区别
- Jdk包括了Jre和Jvm,Jre包括了Jvm
- Jdk是我们编写代码使用的开发工具包
- Jre 是Java的运行时环境,他大部分都是 C 和 C++ 语言编写的,他是我们在编译java时所需要的基础的类库
- Jvm俗称Java虚拟机,他是java运行环境的一部分,它虚构出来的一台计算机,在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序
4. 说一下 JVM由那些部分组成,运行流程是什么?

- JVM包含两个子系统和两个组件: 两个子系统为Class loader(类装载)、Execution engine(执行引擎); 两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。